Usage of software programs on mobile computing devices

ABSTRACT

A solution is provided for controlling usage of one or more software programs on one or more mobile computing devices. A corresponding method comprises monitoring an indication of a position of each mobile computing device to determine a location area of the mobile computing device. The method comprises assigning each one of the software programs to a usage group. For each location area, the software programs of each software program type are assigned to the corresponding usage groups providing one or more usage characteristics that fulfill one or more usage requirements of each software program; this is performed according to one or more optimization criteria depending on one or more usage weights of each usage group. The method comprises enabling the usage of each software program according to the usage characteristics of the corresponding usage group.

BACKGROUND

The present disclosure relates to the Information Technology (IT) field.More specifically, this disclosure relates to the control of the usageof software programs on mobile computing devices.

Mobile computing devices (or simply mobile devices) have become more andmore popular in recent years, especially thanks to the widespreaddiffusion of smart-phones and tablets. The mobile devices make manyactivities substantially ubiquitous, since they may be used almosteverywhere; particularly, users of the mobile devices may run a numberof mobile software applications, also known as (mobile) apps. The appsare software programs that are specifically designed to run on themobile devices. For this purpose, the apps are relatively thin (to copewith computing/supply power constraints of the mobile devices), simple(to cope with small screens of the mobile devices) and fast (to copewith reduced attention of the users in mobility); conversely, the appsmay exploit specific features that are typically available on the mobiledevices (for example, GPS receivers, cameras, accelerometers). Userdemand and development facility have caused an explosion of the numberand variety of the apps (for example, for information retrieval,e-commerce, multi-media playing, games).

The usage of the apps (like any other software programs) may require thecompliance with specific limitations (for example, available licenseentitlements, allowed resource consumptions); however, the control ofthe usage of the apps on the mobile devices may be quite challenging.

For this purpose, for example, online stores are provided to browseavailable apps (for example, for a specific operating system), viewinformation about them (comprising user's reviews and ratings) anddownload selected apps. Some stores also offer a licensing service whichmay be used to enforce licensing policies for the apps that aredownloaded from them; particularly, an app may query a licensing serverto verify whether it is correctly licensed for use on the mobile devicewherein it is installed, in order to enable or disable its useaccordingly (for example, with the use of the app that is enabled onlywhen a user of the mobile device is a recorded purchaser of the app).

SUMMARY

A simplified summary of the present disclosure is herein presented inorder to provide a basic understanding thereof; however, the solepurpose of this summary is to introduce some concepts of the disclosurein a simplified form as a prelude to its following more detaileddescription, and it is not to be interpreted as an identification of itskey elements nor as a delineation of its scope.

In general terms, the present disclosure is based on the idea ofcontrolling the usage of software programs on mobile computing devicesaccording to a grouping thereof.

Particularly, an aspect provides a method for controlling usage of oneor more software programs on one or more mobile computing devices. Themethod comprises monitoring an indication of a position of each mobilecomputing device to determine a location area of the mobile computingdevice (among a plurality of location areas). The method comprisesassigning each one of the software programs to a usage group (among aplurality of usage groups of a software program type of the softwareprogram for the location area of the corresponding mobile computingdevice). For each location area, the software programs of each softwareprogram type are assigned to the corresponding usage groups providingone or more usage characteristics that fulfill one or more usagerequirements of each software program; this is performed according toone or more optimization criteria depending on one or more usage weightsof each usage group. The method comprises enabling the usage of eachsoftware program according to the usage characteristics of thecorresponding usage group.

In an embodiment, said assigning each one of the software programs to ausage group comprises, for each location area, assigning the softwareprograms of each software program type to the usage groups of thesoftware program type for the location area further according to one ormore usage constraints of the usage groups of the software program typefor the location area.

In an embodiment, said assigning each one of the software programs to ausage group comprises, for each location area, moving at least one ofthe software programs from the corresponding usage group to a differentone of the usage groups of the corresponding software program type forthe location area.

A further aspect provides a computer program for implementing thismethod (and a corresponding computer program product).

A further aspect provides a corresponding system.

BRIEF DESCRIPTION OF THE DRAWINGS

The solution of the present disclosure, as well as further features andthe advantages thereof, will be best understood with reference to thefollowing detailed description thereof, given purely by way of anon-restrictive indication, to be read in conjunction with theaccompanying drawings (wherein, for the sake of simplicity,corresponding elements are denoted with equal or similar references andtheir explanation is not repeated, and the name of each entity isgenerally used to denote both its type and its attributes—such as value,content and representation).

FIG. 1 shows a schematic block-diagram of a computing infrastructurewherein the solution according to an embodiment of the presentdisclosure may be applied.

FIG. 2A-FIG. 2G show an exemplary application of the solution accordingto an embodiment of the present disclosure.

FIG. 3 shows the main software components that may be used to implementthe solution according to an embodiment of the present disclosure.

FIG. 4 shows an activity diagram describing the flow of activitiesrelating to an implementation of the solution according to an embodimentof the present disclosure.

DETAILED DESCRIPTION

With reference to FIG. 1, a schematic block-diagram is shown of acomputing infrastructure 100 wherein the solution according to anembodiment of the present disclosure may be applied.

The computing infrastructure 100 comprises several (wireless network)access points 105, for example, of the Wireless Fidelity (Wi-Fi) type.The access points 105 are used to connect different mobile (computing)devices 110 that are within their transmission range 115 intocorresponding Wireless Local Area Networks (WLANs).

Each mobile device 110 (for example, a smart-phone or a tablet) isdesigned to be transported by a user thereof during its normaloperation; therefore, the mobile device 110 is generally supplied bybattery, it is quite small and light, and it supports wirelessconnectivity (to the access points 105 in the example at issue). Eachmobile device 110 has different apps (i.e., mobile softwareapplications) installed thereon, which may be used to performcorresponding functions by its user.

In turn, the access points 105 are connected to the Internet (forexample, through a fixed-line telephone network). The Internet is formedby millions of server computing machines (or simply servers), which areinterconnected through a global communication network 120. As far asrelevant to the present disclosure, the Internet comprises an appcontrol server 125 (or more); as described in the following, the appcontrol server 125 is used to control the usage of the apps on themobile devices 110.

The app control server 125 comprises several units that are connected inparallel to a bus structure 130. In detail, one or more microprocessors(μP) 135 control operation of the app control server 125; a RAM 140 isdirectly used as a working memory by the microprocessors 135, and a ROM145 stores basic code for a bootstrap of the app control server 125. Theapp control server 125 also has a mass-memory comprising one or morehard disks 150 and drives 155 for reading/writing removable storageunits 160 (for example, optical disks). Moreover, the app control server125 comprises one or more peripheral units 165, such as a keyboard, amouse, a monitor and a network adapter (for example, for plugging theapp control server 125 in a data center and then allowing it tocommunicate with the network 120 through a router/switch sub-systemthereof). For example, the hard disks 150 may be provided by storageunits of the data center, and the drives 155 and the peripheral units165 may be provided by a console of the data center. Each mobile device110 has a similar structure, suitably scaled; for example, in this casethe mass memory may comprise a flash memory card and the peripheralunits may comprise a wireless network adapter of the Wi-Fi type (forcommunicating with the access points 105), a mobile telephonetransceiver for communicating with a mobile telephone infrastructure(not shown in the figure) and a GPS receiver (for tracking a position ofthe mobile device 110).

With reference now to FIG. 2A-FIG. 2G, an exemplary application is shownof the solution according to an embodiment of the present disclosure.

Starting from FIG. 2A, the mobile devices may move across a plurality oflocations areas (for example, each one defined by the connection to oneor more corresponding access points). A position of the mobile devices(indicated by the access points to which they are connected in theexample at issue) is monitored to determine their location areas. Forexample, in a very simplified scenario as illustrated in the figure,seven mobile devices (differentiated with the references 110.1, 110.2,110.3, 110.4, 110.5, 110.6 and 110.7) are in a location area LA.1 (forexample, a premise of a company).

A plurality of usage groups are defined for each (app) type of the appsthat may be used on the mobile devices 110.1-110.7 when they are in thelocation area LA.1. Each usage group of the app type provides one ormore usage characteristics for its apps, i.e., instances thereof (forexample, different functionalities/performance); in the example atissue, three usage groups may be defined for an app type implementing aninformation retrieval service, which app type may be used in a basicmode wherein only limited features are enabled (group Gb), in a standardmode wherein all the features are enabled (group Gs) and in a premiummode wherein all the features are enabled and a minimum bandwidth isguaranteed (group Gp). Each usage group of the app type is alsoassociated with one or more usage weights (for example, license costs);in the example at issue, the usage groups Gb (for the basic mode), Gs(for the standard mode) and Gp (for the premium mode) have increasingusage weights.

Each app running on the mobile devices 110.1-110.7 is associated withone or more usage requirements (for example, functionalities and/orperformance that are required by the corresponding users); therefore, inthe example at issue the usage requirements may be defined by thefeatures and possibly the bandwidth that are required by the apps of theabove-mentioned app type running on the mobile devices 110.1-110.7.

Each app is assigned to one of the usage groups of its app type for thelocation area of its mobile device. For each location area, the apps ofeach app type are assigned to the usage groups (of the app type for thislocation area) whose usage characteristics fulfill the usagerequirements of the apps; this operation is performed according to oneor more optimization criteria, which depend on the usage weights of thecorresponding usage groups (for example, by minimizing a cost functionequal to the sum of the usage weights of each usage group multiplied bythe number of the apps assigned thereto). Therefore, in the example atissue the above-mentioned apps running on the mobile devices 110.1-110.7are assigned to the usage groups that provide the requiredfunctionalities with the lowest usage weights; as shown in the figure,the apps on the mobile devices 110.2, 110.6 only need to use the limitedfeatures so that they are assigned to the usage group Gb, the apps onthe mobile devices 110.1, 110.3, 110.5, 110.7 need to use other features(in addition to the limited features) but without any bandwidthrequirement so that they are assigned to the usage group Gs, and the appon the mobile device 110.4 needs to use other features (in addition tothe limited features) and it requires a bandwidth higher than the(guaranteed) minimum bandwidth so that it is assigned to the usage groupGp. The usage of the apps on the mobile devices 110.1-110.7 is thenenabled according to the usage characteristics of the correspondingusage groups (to which they have been assigned); in this way, the appson the mobile devices 110.2, 110.6 (group Gb) only have the limitedfeatures enabled, the apps on the mobile devices 110.1, 110.3, 110.5,110.7 (group Gs) have all the features enabled and the app on the mobiledevice 110.4 (group Gp) has all the features enabled with the minimumbandwidth that is guaranteed.

Later on, a further mobile device 110.8 enters the location area LA.1;the mobile device 110.8 runs the same app of the above-mentioned apptype; the app on the mobile device 110.8 needs to use the limitedfeatures only. Therefore, as shown in FIG. 2B, the app on the mobiledevice 110.8 is assigned to the usage group Gb (so as to have thelimited features only that are enabled).

Moving to FIG. 2C, the app on the mobile device 110.6 now needs to useone or more other features of the same app in addition to its limitedfeatures (but without any bandwidth requirement). Therefore, the app onthe mobile device 110.8 is moved from the usage group Gb to the usagegroup Gs (so as to have all the features that are enabled).

In this way, the typical nomadic behavior of the mobile devices may beexploited for optimizing the usage of their apps. As a result, themanagement of corresponding limitations (for example, available licenseentitlements, allowed resource consumptions) is significantly improved.Moreover, the assignment of the apps to their usage groups is dynamic;for example, this assignment changes automatically over time accordingto the positions of the mobile devices and/or to their usagerequirements.

In an embodiment, each usage group is also associated with one or moreusage constraints (for example, a maximum number of apps that may beassigned at the same time to the usage group); in the example at issue,the usage group Gb may have at most 10 apps, the usage group Gs may haveat most 5 apps and the usage group Gp may have at most 2 apps.

In this situation, it may happen that one or more (non-assignable) appsmay not be assigned to any usage group fulfilling their usagerequirements. For example, as shown in FIG. 2D, should the app on themobile device 110.8 need to use one or more other features of the sameapp in addition to the limited features, it may not be moved from theusage group Gb to the usage group Gs; indeed, in this case the usageconstraints of the usage group Gs might not be satisfied since it hasalready reached its maximum number of apps (5).

In an embodiment, in response thereto at least one of the apps on themobile devices 110.1-110.8 is moved from its (current) usage group to adifferent (new) usage group of the corresponding app type for thelocation area LA.1. This operation may be based on a usage priority ofeach app (for example, low for apps running on mobile devices of normalusers and high for apps running on mobile devices of privileged users).In the example at issue, as shown in FIG. 2E, the app (assigned to theusage group Gs) running on the mobile device 110.5 has a low priority;therefore, this app may be moved down (i.e., demoted) from the usagegroup Gs to the usage group Gb, so that the features different from thelimited features are not enabled, and then may not be used, any longer.In this way, the apps of the usage group Gs become lower than itsmaximum number of apps (i.e., 4<5). Therefore, the app on the mobiledevice 110.8 may now be moved from the usage group Gb to the usage groupGs.

Conversely, as shown in FIG. 2F, the app (assigned to the usage groupGs) running on the mobile device 110.3 has a high priority; therefore,this app may be moved up (i.e., promoted) from the usage group Gs to theusage group Gp, so that all the features remain enabled but now with theminimum bandwidth that is guaranteed. In this case as well, the apps ofthe usage group Gs become lower than its maximum number of apps (i.e.,4<5). Therefore, the app on the mobile device 110.8 may now be moved asabove from the usage group Gb to the usage group Gs.

In this way, all the apps may be assigned to one of the correspondingusage groups (even when their usage constraints would not be satisfied);particularly, when one or more (lower priority) apps are demoted thisresult is achieved to the detriment of the usage requirements, whereaswhen one or more (higher priority) apps are promoted the same result isachieved to the detriment of the usage weights.

In an embodiment, in addition or in alternative to the above-mentionedmovement of the apps among the usage groups, in the same situation anindication of a recovery action may be provided (for example, in amessage to the mobile device of each app that may not be assigned); therecovery action indicates an operation that should allow the assignmentof this app to a usage group fulfilling its usage requirements. Forexample, the recovery action may suggest the movement of the mobiledevice from its (current) location area to a different (new) locationarea (such as in another premise of the same company). In the example atissue, as shown in FIG. 2G, the mobile device 110.8 might move to alocation area LA.2 wherein the apps of the usage group Gs are lower thanits maximum number of apps. Therefore, in the location area LA.2 the appon the mobile device 110.8 may now be assigned to the usage group Gs.

In this way, it is possible to satisfy the usage constraints withoutadversely affecting the usage requirements nor the usage weights (at thecost of some burdens to the users of the mobile devices, such as theirmovement to a different location area).

With reference now to FIG. 3, the main software components 300 are shownthat may be used to implement the solution according to an embodiment ofthe present disclosure. The software components 300 are typically storedin the mass memory and loaded (at least partially) into the workingmemory of the corresponding computing machines when the programs arerunning. The programs are initially installed into the mass memory, forexample, from removable storage units or from the network. In thisrespect, each software component may represent a module, segment orportion of code, which comprises one or more executable instructions forimplementing the specified logical function.

Particularly, each mobile device 110 (only one shown in the figure) runsone or more apps 205. The mobile device 110 also runs an enabling agent210 (for example, implemented by a specific app as well), which enablesthe usage of the (other) apps 205 on the mobile device 110. For thispurpose, the enabling agent 210 may exploit a position monitor 215,which monitors the position of the mobile device 110 over time (forexample, by its GPS receiver). Moreover, the enabling agent 210 accessesan app repository 220, which stores information about all the apps 205that are installed on the mobile device. For example, the app repository220 may comprise an entry for each app; the entry indicates the currentusage requirements of the app and its functionalities that may involve achange of the usage requirements of the app (such as the features thecause the passage from the basic mode to the standard mode andvice-versa in the above-mentioned example).

Moving to the app control server 125, it runs an enabling server 225,which controls the enablement of the usage of the apps 205 running onselected mobile devices 110 (for example, all the mobile devices of theemployees of a corresponding company). For this purpose, the enablingserver 225 interacts with the enabling agent 210 of each (selected)mobile device 110. Moreover, the enabling server 225 cooperates with anassigning engine 230, which controls the assignment of the apps to thecorresponding usage groups. The assigning engine 230 exploits a locationdetector 235, which determines the location area of each mobile deviceaccording to its position. For this purpose, the location detector 235may exploit an access point monitor 240, which monitors the mobiledevices that are connected to selected access points (for example, inall the premises of the company). The location detector 235 furtheraccesses a location area repository 245, which stores a definition of aplurality of pre-defined location areas; for example, a location area isdefined for each premise of the company (as identified by one or moreaccess points thereof), and a further location area is defined outsideall the premises of the company.

Moreover, the assigning engine 230 accesses a usage group repository250, which stores information about all the usage groups that areavailable. For example, the usage group repository 250 comprises anentry for each location area, which comprises an entry for each app typethat may be used in the location area, which in turn comprises an entryfor each usage group to which its apps may be assigned when they arerunning in the location area; the entry indicates the usagecharacteristics, the usage weights and the usage constraints for the apptype in the location area, and information about the corresponding appsthat are assigned to the usage group at the moment (such as their appnumber). The usage characteristics specify how the corresponding appsmay be used on the mobile devices. For example, the usagecharacteristics may be defined in terms of either functionalities orperformance; examples of these usage characteristics are enabledfeatures, accessible contents, guaranteed performance. The usage weightsdefine how the usage groups contribute to an optimization of theassignment of the corresponding apps. For example, the usage weights maybe defined according to costs incurred by the usage of the correspondingapps in terms of either economic expenses or resource consumptions;examples of these usage weights are an amount of money to be paid, anestimated bandwidth or processing power consumption. The usageconstraints define conditions that should be satisfied for theassignment of the corresponding apps to the usage group. For example,the usage constraints may be defined according to either commercial ortechnical considerations; example of these usage constraints are themaximum number of apps that may run, the maximum amount of resourcesthat may be used (according to corresponding license conditions orresource availabilities).

The assigning engine 230 further accesses a mobile device repository255, which stores information about all the mobile devices. For example,the mobile device repository 255 comprises an entry for each mobiledevice; the entry for the mobile device indicates its location area atthe moment. In turn, the entry for the mobile device comprises an entryfor each app installed thereon; the entry for the app indicates its apptype, usage requirements, usage priority and possible usage group towhich it is assigned at the moment. The usage requirements define howthe app should be used on the mobile device. For example, the usagerequirements may be defined individually for each app or globally foreach mobile device (or user), either in static terms or in dynamicterms; examples of these usage requirements are required functionalitieslike features, contents, performance (e.g., a minimum value of a qualityof service, or QoS, indicator measuring it, such as bandwidth, responsetime). The usage priorities define an order of preference for theassignment of the apps to the corresponding usage groups. For example,the usage priorities as well may be defined individually for each app orglobally for each mobile device (or user), either in static terms or indynamic terms; examples of these usage priorities are values dependingon a role of the user of the mobile device, on the amount paid for thelicense of the app, on the waiting time of the app for its use.

With reference now to FIG. 4, an activity diagram is shown describingthe flow of activities relating to an implementation of the solutionaccording to an embodiment of the present disclosure.

Particularly, the diagram represents an exemplary process forcontrolling the usage of the apps on the corresponding mobile devices bythe app control server with a method 400. In this respect, each blockmay represent one or more executable instructions for implementing thespecified logical function on the app control server.

The process passes from block 403 to block 406 as soon as a changingevent that may cause a change of the usage of the apps occurs. This mayhappen when a mobile device changes its location area, when an appchanges its usage requirements (comprising its starting) or when an appis stopped. For example, the location detector monitors the position ofeach mobile device (as provided by the access point monitor); thelocation detector detects any change of location area of a mobile devicewhen it moves from a location area to another location area (as definedin the location area repository) and notifies it to the assigningengine. Moreover, the enabling agent on each mobile device monitors theapps running thereon; the enabling agent detects any change of usagerequirements of an app (by comparing any required change offunctionalities against the app repository) or its stop. In responsethereto, the enabling agent notifies this change to the enabling server,which forwards it to the assigning engine.

In response to any changing event, the enabling agent at first updatesthe information relating to the previous situation. Particularly, foreach app whose mobile device has left an (old) location area or it hasbeen stopped, the assigning engine updates the corresponding entry inthe mobile device repository accordingly (decrementing the app number ofits usage group). Moreover, the assigning engine verifies whether one ormore apps have been demoted/promoted from this (original) usage group toanother (current) usage group (as described in the following). If so,the assigning engine selects one of these demoted/promoted app to berestored to its original usage group; for example, the assigning engineprivileges the promoted apps or the demoted apps according to aconfiguration thereof; the promoted apps are selected in increasingorder of usage priority and then in decreasing order of time ofassignment to the current usage group for the same usage priority or thedemoted apps are selected in decreasing order of usage priority and thenin increasing order of time of assignment to the current usage group forthe same usage priority. The assigning engine moves the selected(demoted/promoted) app back from the current usage group to the originalusage group; accordingly, the assigning engine updates the mobile devicerepository (indicating that the selected app is now assigned to theoriginal usage group) and the usage group repository (decrementing theapp number of the current usage group and incrementing the app number ofthe original usage group). The enabling agent then updates theinformation relating to the new situation. Particularly, the enablingagent updates the entry in the mobile device repository for the mobiledevice changing location area or for the app changing usagerequirements.

A loop is then performed for processing the impacted apps (i.e., all theapps running on the mobile device changing location area or the specificapp changing usage requirements). The loop begins at block 409 whereinthe assigning engine takes into account a current one of the impactedapps (starting from a first one in any arbitrary order). The assigningengine at block 412 retrieves information about the current app from themobile device repository (i.e., its app type, usage requirements andcurrent location area of the corresponding mobile device). Continuing toblock 415, the assigning engine retrieves information about all theusage groups of this app type for the current location area from theusage group repository (i.e., usage characteristics, usage weights,usage constraints, assigned apps); these usage groups (being candidatefor the assignment of the current app) are arranged in increasing orderof usage weights.

A further loop is performed for processing the candidate usage groups.The loop begins at block 418 wherein the assigning engine takes intoaccount a current one of the candidate usage groups (starting from afirst one in increasing order of usage weights). The assigning engine atblock 421 verifies the usage characteristics of the current usage groupagainst the usage characteristics of the current app; the flow ofactivity then branches according to the result of this verification. Ifthe usage characteristics of the current usage groups fulfill the usagecharacteristics of the current app (meaning that it is appropriate forthe assignment of the current app with the lowest usage weights), theassigning engine at block 424 further verifies the assigned apps of thecurrent usage group against its usage constraints. If the assigned appsof the current usage group allow the addition of the current app thereto(for example, when the app number is lower than the maximum number), theflow of activity descends into block 427. In this phase, the assigningengine assigns the current app to the current usage group; accordingly,the assigning engine updates the mobile device repository (indicatingthat the current app is assigned to the current usage group) and theusage group repository (incrementing the app number of the current usagegroup and possibly decrementing the app number of its previous usagegroup).

Conversely, if the assigning engine at the block 424 determines that theassigned apps of the current usage group do not allow the addition ofthe current app thereto (i.e., when the app number has already reachedthe maximum number in the example at issue), the flow of activitydescends into block 430. In this case, the current app may not beassigned to the current usage group, i.e., the usage group that isappropriate to fulfill the usage requirements of the current app withthe lowest usage weights; therefore, the flow of activity branchesaccording to a configuration of the assigning engine.

Particularly, if the assigning engine is configured to privilege theusage weights (to the detriment of the usage requirements), theassigning engine at block 433 searches for any other (new) usage group,of the same app type of the current app, with lower usage weights (indecreasing order thereof) that is suitable to receive the addition of afurther app (i.e., with the app number lower than the maximum number inthe example at issue). The flow of activity further branches at block436 according to the result of this search. If the new usage group hasbeen found, the assigning engine at block 439 selects an app, among thecurrent app and the apps of the same app type thereof assigned to thecurrent usage group, for its demotion to the new usage group (forexample, in increasing order of usage priority and then in decreasingorder of time of assignment to the current usage group for the sameusage priority); at this point, the assigning engine assigns the currentapp to the current usage group if necessary (updating the correspondinginformation as above), and then it moves the selected app from thecurrent usage group to the new usage group by accordingly updating themobile device repository (indicating that the selected app is nowassigned to the new usage group) and the usage group repository(decrementing the app number of the current usage group if necessary andincrementing the app number of the new usage group).

Referring back to the block 430, if the assigning engine is configuredto privilege the usage requirements (to the detriment of the usageweights), the assigning engine at block 442 searches for any other (new)usage group, of the same app type of the current app, with higher usageweights (in increasing order thereof) that is suitable to receive theaddition of a further app as above. The flow of activity furtherbranches at block 445 according to the result of this search. If the newusage group has been found, the assigning engine at block 448 selectedan app, among the current app and the apps of the same app type thereofassigned to the current usage group, for its promotion to the new usagegroup (for example, in decreasing order of usage priority and then inincreasing order of time of assignment to the current usage group forthe same usage priority); at this point, the assigning engine assignsthe current app to the current usage group and then it moves theselected app from the current usage group to the new usage group asabove.

The flow of activity passes to block 451 from the block 427, from theblock 439 or from the block 448. At this point, the assigning enginenotifies the enabling server of the changes that have occurred (i.e.,the assignment of the current app with the possible demotion/promotionof the selected app); the enabling server in turn enables the usage ofthese apps accordingly (enabling/disabling correspondingfunctionalities) by sending corresponding messages to the enablingagents of their mobile devices.

Returning to the block 436, if no app may be demoted, the assigningengine at block 454 verifies whether the usage groups for the promotionof the apps have already been searched. If not, the flow of activityreturns to the block 442 in order to attempt promoting an app as above.Likewise, returning to the block 445, if no app may be promoted, theassigning engine at block 457 verifies whether the usage groups for thedemotion of the apps have already been searched. If not, the flow ofactivity returns to the block 433 in order to attempt demoting an app asabove.

Referring back to the block 421, if the usage characteristics of thecurrent usage group do not fulfill the usage characteristics of thecurrent app, the assigning engine at block 460 verifies whether a lastone of the candidate usage groups has been taken into account. If not,the process returns to the block 418 to repeat the same operations on anext one of the candidate usage groups (with higher usage weights).Conversely (i.e., when no usage group whose usage characteristics mayfulfill the usage requirements of the current app is available in thecurrent location area), the flow of activity descends into block 463;the same point is also reached from the block 454 or from the block 457when no app may be demoted nor promoted to allow assigning the currentapp to the current usage group. At this point, the assigning enginedetermines any actions that may be performed in an attempt to allow theassignment of the current app; for example, the assigning engine maysearch for a different (new) location area, in decreasing order ofdistance from the current location area, wherein all the apps running onthe same mobile device of the current app may be assigned to a usagegroup (by repeating the same operations described above). Continuing toblock 466, the assigning engine notifies these recovery actions (forexample, suggesting the movement to the new location area when it isfound or indicating the impossibility of using the current app at themoment otherwise) to the enabling server, which in turn forwards them tothe enabling agent of the mobile device of the current app for theirdisplay thereon.

The flow of activity then passes to block 469 from the block 451 or fromthe block 466. At this point, the assigning engine verifies whether alast one of the impacted apps has been taken into account. If not, theprocess returns to the block 409 to repeat the same operations on a nextone of the impacted apps. Conversely, the flow of activity returns tothe block 403 waiting for a next changing event.

Naturally, in order to satisfy local and specific requirements, a personskilled in the art may apply many logical and/or physical modificationsand alterations to the present disclosure. More specifically, althoughthis disclosure has been described with a certain degree ofparticularity with reference to one or more embodiments thereof, itshould be understood that various omissions, substitutions and changesin the form and details as well as other embodiments are possible.Particularly, different embodiments of the present disclosure may evenbe practiced without the specific details (such as the numerical values)set forth in the preceding description to provide a more thoroughunderstanding thereof; conversely, well-known features may have beenomitted or simplified in order not to obscure the description withunnecessary particulars. Moreover, it is expressly intended thatspecific elements and/or method steps described in connection with anyembodiment of the present disclosure may be incorporated in any otherembodiment as a matter of general design choice. In any case, ordinal orother qualifiers are merely used as labels to distinguish elements withthe same name but do not by themselves connote any priority, precedenceor order. Moreover, the terms include, comprise, have, contain andinvolve (and any forms thereof) should be intended with an open,non-exhaustive meaning (i.e., not limited to the recited items), theterms based on, dependent on, according to, function of (and any formsthereof) should be intended as a non-exclusive relationship (i.e., withpossible further variables involved), the term a/an should be intendedas one or more items (unless expressly indicated otherwise), and theterm means for (or any means-plus-function formulation) should beintended as any structure adapted or configured for carrying out therelevant function.

For example, an embodiment provides a method for controlling usage ofone or more software programs on one or more mobile computing devices.However, the method may be used to control any usage of the softwareprograms (for example, their running or even simply their downloading,in any organization or in a corresponding online store). The softwareprograms may be in any number and of any type (for example, apps forwhatever purpose such as email clients, remote banking services,navigators, or widgets, agents) and they may run on any number and typeof mobile computing devices (for example, netbooks).

In an embodiment, the method comprises monitoring an indication of aposition of each mobile computing device, in order to determine alocation area of the mobile computing device (among a plurality oflocation areas). However, the position of the mobile device may beindicated in any way (for example, by its GPS coordinates, mobiletelephone cell, IP address) and it may be monitored in any way (forexample, by the mobile device itself); moreover, the location area ofthe mobile device may be determined in any way (for example, bycomparing its GPS coordinates with predefined ranges, on the mobiledevice as well), and the location areas may be in any number and of anytype (for example, geographical regions such as states or cities, knownestablishments such as schools, museums, shopping centers, possibly witha default location area for the mobile devices whose position is notknown).

In an embodiment, the method comprises assigning each one of thesoftware programs to a usage group (among a plurality of usage groups ofa software program type of the software program for the location area ofthe corresponding mobile computing device). For each location area, thesoftware programs of each software program type are assigned to thecorresponding usage groups providing one or more usage characteristicsthat fulfill one or more usage requirements of each software program;this is performed according to one or more optimization criteriadepending on one or more usage weights of each usage group. However, theusage groups may be in any number, each one with any number and type ofusage characteristics and usage weights, and each software program mayhave any number and type of usage requirements (see below). Moreover,the software programs may be assigned to the usage groups according toany number and type of optimization criteria; for example, thisoperation may be performed analytically by optimizing, i.e., minimizingor maximizing, any target function based on the usage weights (forexample, differentiating the contribution of the usage weights accordingto characteristics of the mobile devices, for example, increasing with aprocessing power thereof). In any case, this operation may be performedat any time (for example, for all the software programs on the mobilecomputing devices of each location area periodically, in response to anyconfiguration change or to a corresponding command).

In an embodiment, the method comprises enabling the usage of eachsoftware program according to the usage characteristics of thecorresponding usage group. However, the usage of the software programsmay be enabled in any way, even for a limited period of time only (forexample, by downloading corresponding tokens to the mobile devices).

In an embodiment, the usage requirements of at least one of the softwareprograms comprise a required value of one or more performance indicatorsof the software program. However, the usage requirements (of any numberof software programs) may comprise the required value of any number andtype of performance indicators (for example, latency, data transferrate). In an embodiment, the usage characteristics of at least one ofthe usage groups comprise a minimum value of one or more performanceindicators of the corresponding software program type. However, theusage characteristics (of any number of usage groups) may comprise theminimum value of any number and type of performance indicators (seeabove). In an embodiment, the usage requirements of at least one of thesoftware programs comprise one or more required features of the softwareprogram. However, the usage requirements (of any number of softwareprograms) may comprise any number and type of required features (forexample, enablement of components, allocation of resources). In anembodiment, the usage characteristics of at least one of the usagegroups comprise one or more enabled features of the correspondingsoftware program type. However, the usage characteristics (of any numberof usage groups) may comprise any number and type of enabled features(see above). More generally, the usage requirements and the usagecharacteristics may be defined in different, alternative or additionalways (for example, only by performance indicators, only by features, byany combinations thereof, by Service Level Agreements, or SLAs).

In an embodiment, the usage weights of at least one of the usage groupscomprise one or more license cost indicators of the correspondingsoftware program type. However, the usage weights (of any number ofusage groups) may comprise any number and type of license costindicators (for example, a flat amount up to a threshold number ofsoftware programs and then a fixed amount for each additional softwareprogram, different costs for different types of mobile computingdevices). More generally, the usage weights may be defined in different,alternative or additional ways (for example, by resource consumptionindicators, by any combinations of license cost indicators and resourceconsumption indicators).

In an embodiment, said step of assigning each one of the softwareprograms to a usage group comprises, for each location area, assigningthe software programs of each software program type to the usage groupsof the software program type for the location area further according toone or more usage constraints of the usage groups of the softwareprogram type for the location area. However, any number of usage groups(down to none) may comprise any number and type of usage constraints(for example, a maximum total processing power of the mobile computingdevices wherein the software programs run, a maximum total bandwidthassigned to the software programs, specific usage policies such as amaximum usage time).

In an embodiment, said step of assigning each one of the softwareprograms to a usage group comprises, for each location area, moving atleast one of the software programs from the corresponding usage group toa different one of the usage groups of the corresponding softwareprogram type for the location area. However, any number of softwareprograms may be moved to any different usage group (for example, onlypromoting them, only demoting them, only moving them to a directlyadjacent usage group in terms of usage weights); in any case, thisfeature may also be omitted in a simplified implementation.

In an embodiment, said step of assigning each one of the softwareprograms to a usage group comprises, for each location area, moving atleast one of the software programs from the corresponding usage group toa different one of the usage groups of the corresponding softwareprogram type for the location area according to a usage priority of eachsoftware program of the software program type in the location area.However, the usage priorities may be defined in any way (for example,with a range of values, only low/high, with a default value when it isnot specified); moreover, the movement of the software programs todifferent usage groups may be performed according to the usagepriorities in any way (for example, with same values thereof thatprevent the demotion and/or the promotion). In any case, this operationmay be based on different, alternative or additional criteria, evenwithout the use of any usage priority (for example, according to thepast or remaining running time of the software programs).

In an embodiment, the method comprises the following step in response toat least one non-assignable software program of the software programsbeing not assignable to any usage group; an indication of at least onerecovery action, for allowing said assigning each non-assignablesoftware program to a usage group, is provided to the correspondingmobile computing device. However, this operation may be performed inresponse to different, alternative or additional events (for example,when a cost of the assignment of the apps exceeds a threshold), or itmay be omitted at all. Moreover, the recovery actions may be in anynumber and of any type (see below), and they may be provided to themobile computing devices in any way (for example, via notifications,SMSs, e-mails).

In an embodiment, said step of providing an indication of at least onerecovery action comprises the following operations for eachnon-assignable software program. At least one new location area of thelocation areas (different from the location area of the mobile device ofthe non-assignable software program) is selected wherein said assigningthe non-assignable software program to a usage group is possible; anindication of said at least one new location area is provided to themobile computing device of the non-assignable software program. However,the new location areas may be selected in any number and in any way (forexample, only within a predetermined distance) and any indicationthereof (for example, corresponding descriptive names) may be providedto the mobile computing devices in any way (see above). More generally,different, alternative or additional recovery actions may be envisaged(for example, suggesting the use of different software programs).

Generally, similar considerations apply if the same solution isimplemented with an equivalent method (by using similar steps with thesame functions of more steps or portions thereof, removing some stepsbeing non-essential, or adding further optional steps); moreover, thesteps may be performed in a different order, concurrently or in aninterleaved way (at least in part).

An embodiment provides a computer program configured for causing acomputing system to perform the same method as above when the computerprogram is executed on the computing system. An embodiment provides acomputer program product for controlling usage of one or more softwareprograms on one or more mobile computing devices; the computer programproduct comprises a computer readable storage medium having programinstructions embodied therewith, wherein the program instructions isexecutable by a computing system to cause the computing system toperform the same method as above. However, the program may beimplemented as a stand-alone module, as a plug-in for a pre-existingapplication (for example, a licensing application), or even directly inthe latter; moreover, the program may be implemented on any number andtype of servers (for example, as a service) or even in part or entirelyon the mobile computing devices.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention. The computer readable storage medium can be atangible device that can retain and store instructions for use by aninstruction execution device. The computer readable storage medium maybe, for example, but is not limited to, an electronic storage device, amagnetic storage device, an optical storage device, an electromagneticstorage device, a semiconductor storage device, or any suitablecombination of the foregoing. A non-exhaustive list of more specificexamples of the computer readable storage medium includes the following:a portable computer diskette, a hard disk, a random access memory (RAM),a read-only memory (ROM), an erasable programmable read-only memory(EPROM or Flash memory), a static random access memory (SRAM), aportable compact disc read-only memory (CD-ROM), a digital versatiledisk (DVD), a memory stick, a floppy disk, a mechanically encoded devicesuch as punch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire. Computer readable program instructions described hereincan be downloaded to respective computing/processing devices from acomputer readable storage medium or to an external computer or externalstorage device via a network, for example, the Internet, a local areanetwork, a wide area network and/or a wireless network. The network maycomprise copper transmission cables, optical transmission fibers,wireless transmission, routers, firewalls, switches, gateway computersand/or edge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device. Computer readable programinstructions for carrying out operations of the present invention may beassembler instructions, instruction-set-architecture (ISA) instructions,machine instructions, machine dependent instructions, microcode,firmware instructions, state-setting data, or either source code orobject code written in any combination of one or more programminglanguages, including an object oriented programming language such asSmalltalk, C++ or the like, and conventional procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention. Aspectsof the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions. These computer readable programinstructions may be provided to a processor of a general purposecomputer, special purpose computer, or other programmable dataprocessing apparatus to produce a machine, such that the instructions,which execute via the processor of the computer or other programmabledata processing apparatus, create means for implementing thefunctions/acts specified in the flowchart and/or block diagram block orblocks. These computer readable program instructions may also be storedin a computer readable storage medium that can direct a computer, aprogrammable data processing apparatus, and/or other devices to functionin a particular manner, such that the computer readable storage mediumhaving instructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks. Thecomputer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks. The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

An embodiment provides a system configured for performing the steps ofthe same method. However, the method may also be carried out on a systembased on a different architecture (for example, a local, wide area,global, cellular or satellite network), and exploiting any type of(wired and/or wireless) connections.

Generally, similar considerations apply if the system has a differentstructure or comprises equivalent components, or it has other operativecharacteristics. In any case, every component thereof may be separatedinto more elements, or two or more components may be combined togetherinto a single element; moreover, each component may be replicated tosupport the execution of the corresponding operations in parallel.Moreover, unless specified otherwise, any interaction between differentcomponents generally does not need to be continuous, and it may beeither direct or indirect through one or more intermediaries.

1-9. (canceled)
 10. A computer program product for controlling usage ofone or more software programs on one or more mobile computing devices,the computer program product comprising a computer readable storagemedium having program instructions embodied therewith, the programinstructions executable by a computing system to cause the computingsystem to: monitor an indication of a position of each mobile computingdevice to determine a location area of the mobile computing device,among a plurality of location areas; assign each one of the softwareprograms to a usage group, among a plurality of usage groups of asoftware program type of the software program for the location area ofthe corresponding mobile computing device, wherein for each locationarea the software programs of each software program type are assigned tothe corresponding usage groups providing one or more usagecharacteristics that fulfill one or more usage requirements of eachsoftware program according to one or more optimization criteriadepending on one or more usage weights of each usage group; and enableusage of each software program according to the usage characteristics ofthe corresponding usage group.
 11. A system for controlling usage of oneor more software programs on one or more mobile computing devices, thesystem comprising: a processor in communication with a memory; alocation detector configured for monitoring an indication of a positionof each mobile computing device to determine a location area of themobile computing device, among a plurality of location areas; anassigning engine configured for assigning each one of the softwareprograms to a usage group, among a plurality of usage groups of asoftware program type of the software program for the location area ofthe corresponding mobile computing device, wherein for each locationarea the software programs of each software program type are assigned tothe corresponding usage groups providing one or more usagecharacteristics that fulfill one or more usage requirements of eachsoftware program according to one or more optimization criteriadepending on one or more usage weights of each usage group; and anenabling server configured for enabling usage of each software programaccording to the usage characteristics of the corresponding usage group.12. The system according to claim 11, wherein the usage requirements ofat least one of the software programs comprise a required value of oneor more performance indicators of the software program, and wherein theusage characteristics of at least one of the usage groups comprise aminimum value of one or more performance indicators of the correspondingsoftware program type.
 13. The system according to claim 11, wherein theusage requirements of at least one of the software programs comprise oneor more required features of the software program, and wherein the usagecharacteristics of at least one of the usage groups comprise one or moreenabled features of the corresponding software program type.
 14. Thesystem according to claim 11, wherein the usage weights of at least oneof the usage groups comprise one or more license cost indicators of thecorresponding software program type.
 15. The system according to claim11, wherein said assigning engine is further configured for assigningthe software programs of each software program type to the usage groupsof the software program type for each location area further according toone or more usage constraints of the usage groups of the softwareprogram type for the location area.
 16. The system according to claim15, wherein said assigning engine is further configured for moving atleast one of the software programs from the corresponding usage group toa different one of the usage groups of the corresponding softwareprogram type for each location area.
 17. The system according to claim16, wherein said assigning engine is further configured for moving atleast one of the software programs from the corresponding usage group toa different one of the usage groups of the corresponding softwareprogram type for each location area according to a priority of eachsoftware program of the software program type in the location area. 18.The system according to claim 11, wherein said assigning engine isfurther configured for providing, in response to at least onenon-assignable software program of the software programs being notassignable to any usage group, an indication of at least one recoveryaction, for allowing said assigning each non-assignable software programto a usage group, to the corresponding mobile computing device.
 19. Thesystem according to claim 18, wherein said assigning engine is furtherconfigured for selecting, for each non-assignable software program, atleast one new location area of the location areas, different from thelocation area of the mobile device of the non-assignable softwareprogram, wherein said assigning the non-assignable software program to ausage group is possible, and for providing an indication of said atleast one new location area to the mobile computing device of thenon-assignable software program.
 20. The computer program productaccording to claim 10, wherein the usage requirements of at least one ofthe software programs comprise a required value of one or moreperformance indicators of the software program, and wherein the usagecharacteristics of at least one of the usage groups comprise a minimumvalue of one or more performance indicators of the correspondingsoftware program type.
 21. The computer program product according toclaim 10, wherein the usage requirements of at least one of the softwareprograms comprise one or more required features of the software program,and wherein the usage characteristics of at least one of the usagegroups comprise one or more enabled features of the correspondingsoftware program type.
 22. The computer program product according toclaim 10, wherein the usage weights of at least one of the usage groupscomprise one or more license cost indicators of the correspondingsoftware program type.
 23. The computer program product according toclaim 10, wherein said assigning each one of the software programs to ausage group comprises, for each location area: assigning the softwareprograms of each software program type to the usage groups of thesoftware program type for the location area further according to one ormore usage constraints of the usage groups of the software program typefor the location area.
 24. The computer program product according toclaim 23, wherein said assigning each one of the software programs to ausage group comprises, for each location area: moving at least one ofthe software programs from the corresponding usage group to a differentone of the usage groups of the corresponding software program type forthe location area.
 25. The computer program product according to claim23, wherein said assigning each one of the software programs to a usagegroup comprises, for each location area: moving at least one of thesoftware programs from the corresponding usage group to a different oneof the usage groups of the corresponding software program type for thelocation area according to a usage priority of each software program ofthe software program type in the location area.
 26. The computer programproduct according to claim 10, wherein in response to at least onenon-assignable software program of the software programs being notassignable to any usage group, the method further comprises: providingan indication of at least one recovery action, for allowing saidassigning each non-assignable software program to a usage group, to thecorresponding mobile computing device.
 27. The computer program productaccording to claim 26, wherein said providing an indication of at leastone recovery action comprises, for each non-assignable software program:selecting at least one new location area of the location areas,different from the location area of the mobile device of thenon-assignable software program, wherein said assigning thenon-assignable software program to a usage group is possible; andproviding an indication of said at least one new location area to themobile computing device of the non-assignable software program.
 28. Asystem for controlling usage of one or more software programs on one ormore mobile computing devices, the system comprising: a memory withprogram instructions stored thereon; and a processor in communicationwith the memory, wherein the system is configured to perform a method,the method comprising: monitoring an indication of a position of eachmobile computing device to determine a location area of the mobilecomputing device, among a plurality of location areas; assigning eachone of the software programs to a usage group, among a plurality ofusage groups of a software program type of the software program for thelocation area of the corresponding mobile computing device, wherein foreach location area the software programs of each software program typeare assigned to the corresponding usage groups providing one or moreusage characteristics that fulfill one or more usage requirements ofeach software program according to one or more optimization criteriadepending on one or more usage weights of each usage group; and enablingusage of each software program according to the usage characteristics ofthe corresponding usage group.
 29. The system of claim 28, wherein theusage requirements of at least one of the software programs comprise arequired value of one or more performance indicators of the softwareprogram, and wherein the usage characteristics of at least one of theusage groups comprise a minimum value of one or more performanceindicators of the corresponding software program type.